home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / GRAPHICS / IMGLIB95 / UDEMO.PA_ / UDEMO.PA
Text File  |  1996-03-31  |  16KB  |  487 lines

  1. {
  2. Written by Jan Dekkers and Kevin Adams (c) 1995, 1996. If you are a non
  3. registered client, you may use or alter this demo only for evaluation
  4. purposes.
  5.  
  6. Copyright by SkyLine Tools. All rights reserved.
  7.  
  8. Part of Imagelib VCL/DLL Library.
  9. }
  10.  
  11. unit Udemo;
  12.  
  13. {Includes settings to compile in either 16 or 32 bit}
  14. {$I DEFILIB.INC}
  15.  
  16. interface
  17.  
  18. uses
  19. {$IFDEF DEL32}
  20.   Windows,
  21. {$ELSE}
  22.   WinTypes,
  23.   WinProcs,
  24. {$ENDIF}
  25.   DLL95V1,  {ImageLib Dll interface and misc. functions}
  26.   SysUtils,
  27.   Messages,
  28.   Classes,
  29.   Graphics,
  30.   Controls,
  31.   Forms,
  32.   Dialogs,
  33.   StdCtrls,
  34.   ExtCtrls,
  35.   Buttons,
  36.   FileCtrl,
  37.   Printers,
  38.   IToolB,    {PMultiImage Toolbar VCL component}
  39.   UAbout,
  40.   UImage,    {PMultiImage Demo}
  41.   BImage,    {Image Convert Demo}
  42.   MMBlob,    {MultiMedia Blobfield Demo}
  43.   UBlob,     {MultiImage Blobfield Demo}
  44.   UMail,     {Demo}
  45.   UScroll,   {Scrolling messages demo}
  46.   UIconLB,   {Icon List/Combo Box demo}
  47.   UToolbar,  {PMultiImage Toolbar demo}
  48.   Udbtoolb,  {PDBMultiImage Toolbar demo}
  49.   UMdbtb,    {PDBMultiMedia Toolbar demo}
  50.   UMultim,   {PMultiMedia Toolbar demo}
  51.   UFGRAB,    {Video Frame Grabber demo}
  52.   U_gl_pal,  {Global Palette demo}
  53.   Urubberb,  {PDBMultiImage Toolbar demo with Rubberband zooming}
  54.   TMultiP,   {PMultiImage VCL component}
  55.   Preview;
  56.  
  57. type
  58.   TDemoForm1 = class(TForm)
  59.     Panel1          : TPanel;
  60.     SpeedButton1    : TSpeedButton;
  61.     SpeedButton2    : TSpeedButton;
  62.     SpeedButton3    : TSpeedButton;
  63.     SpeedButton4    : TSpeedButton;
  64.     SpeedButton5    : TSpeedButton;
  65.     SpeedButton6    : TSpeedButton;
  66.     SpeedButton7    : TSpeedButton;
  67.     SpeedButton14   : TSpeedButton;
  68.     SpeedButton9    : TSpeedButton;
  69.     Memo1           : TMemo;
  70.     BitBtn1         : TBitBtn;
  71.     SpeedButton10   : TSpeedButton;
  72.     SpeedButton11   : TSpeedButton;
  73.     BitBtn2         : TBitBtn;
  74.     PrintDialog1    : TPrintDialog;
  75.     Panel2          : TPanel;
  76.     PMultiImage1    : TPMultiImage;
  77.     Panel3          : TPanel;
  78.     MultiImage2     : TPMultiImage;
  79.     SpeedButton12   : TSpeedButton;
  80.     ImageToolBar1   : TMImageToolBar;
  81.     SpeedButton8    : TSpeedButton;
  82.     SpeedButton13   : TSpeedButton;
  83.     SpeedButton15   : TSpeedButton;
  84.     SpeedButton16   : TSpeedButton;
  85.     SpeedButton17   : TSpeedButton;
  86.     BitBtn3         : TBitBtn;
  87.     SpeedButton18   : TSpeedButton;
  88.     SpeedButton19   : TSpeedButton;
  89.     ThumbPreview1: TThumbPreview;
  90.     procedure FormCreate(Sender: TObject);
  91.     procedure SpeedButton1Click(Sender: TObject);
  92.     procedure SpeedButton2Click(Sender: TObject);
  93.     procedure SpeedButton3Click(Sender: TObject);
  94.     procedure SpeedButton4Click(Sender: TObject);
  95.     procedure SpeedButton5Click(Sender: TObject);
  96.     procedure SpeedButton6Click(Sender: TObject);
  97.     procedure SpeedButton7Click(Sender: TObject);
  98.     procedure SpeedButton14Click(Sender: TObject);
  99.     procedure BitBtn1Click(Sender: TObject);
  100.     procedure SpeedButton9Click(Sender: TObject);
  101.     procedure SpeedButton10Click(Sender: TObject);
  102.     procedure SpeedButton11Click(Sender: TObject);
  103.     procedure BitBtn2Click(Sender: TObject);
  104.     procedure SpeedButton12Click(Sender: TObject);
  105.     procedure FormActivate(Sender: TObject);
  106.     procedure SpeedButton8Click(Sender: TObject);
  107.     procedure SpeedButton13Click(Sender: TObject);
  108.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  109.     procedure SpeedButton15Click(Sender: TObject);
  110.     procedure SpeedButton16Click(Sender: TObject);
  111.     procedure SpeedButton17Click(Sender: TObject);
  112.     procedure BitBtn3Click(Sender: TObject);
  113.     procedure SpeedButton18Click(Sender: TObject);
  114.     procedure SpeedButton19Click(Sender: TObject);
  115.   private
  116.     { Private declarations }
  117.     WX : Integer;
  118.     WY : Integer;
  119.     Procedure Trigger(Sender : TObject; Var Done : Boolean);
  120.   public
  121.     { Public declarations }
  122.   end;
  123.  
  124. var
  125.   DemoForm1: TDemoForm1;
  126.  
  127. implementation
  128.  
  129. {$R *.DFM}
  130. {---------------------------------------------------------------------}
  131.  
  132. procedure TDemoForm1.FormCreate(Sender: TObject);
  133. begin
  134.   BForm1:=Nil;
  135.   DBMultiImageToolbar:=Nil;
  136.   MMForm1:=Nil;
  137.   MMForm3:=Nil;
  138.   RubberbandForm:=Nil;
  139.   Cursor:=crHourGlass;
  140.   PMultiImage1.ImageName:=ExtractFilePath(Application.ExeName)+'sjef.jpg';
  141.   Cursor:=crDefault;
  142.  {create a message at creation at MultiImage2 (Bottom one)}
  143.  {set Message text}
  144.  
  145. {$IFDEF DEL32}
  146.     MultiImage2.MsgText:='ImageLib 95/31 by SkyLine Tools. Add TIF, PNG, CMS, SCM, JPG, ICO, PCX, BMP, WMF and GIF images'+
  147.     ' to your applications. ImageLib supports both the File and Data-Aware (BLOB) read and write.'+
  148.     ' Add all the image formats and AVI, MOV, MID, RMI, WAV to a TBlobfield.'+
  149.     ' In ImageLib version 95, scrolling text messages can be 64Kb long. '+
  150.     ' ImageLib: Professional Version VCLs\DLL'+
  151.     ' ImageLib VCLs\DLL provides an excellent  tool for implementing  JPEG, GIF, PCX, PNG, WMF,'+
  152.     ' SCM.BMP,ICO and CMS into your applications.  A  royalty  free  VCL with source code is'+
  153.     ' included for the low price of $?????. (Price may vary  outside the United States.)'+
  154.     ' Other image and  multimedia development tools are a lot more expensive and do not include'+
  155.     ' ImageLib''s much talked about scrolling text messages.'+
  156.     ' When the developer compiles  ImageLib  into an executable application with the extension exe.,'+
  157.     ' there are no licensing fees or royalties.'+
  158.     ' When users compared ImageLib''s color resolution with other imaging tools, they found  ImageLib''s'+
  159.     ' to be superior to most.  In fact,  the JPEG is so professional looking that museums are using it'+
  160.     ' to catalogue their art.'+
  161.     ' Also, ImageLib adds DBMultiImage and DBMultiMedia to store and display JPEG, BMP, GIF, PNG,'+
  162.     ' CMS, SCM, PCX , AVI, MOV, MID, WAV and RMI multimedia files in/from a TBlobField.'+
  163.     ' International developers are able to  display strings  in the DLL as a resource file,'+
  164.     ' thereby enabling translation into foreign languages.'+
  165.     ' SkyLine Tools stands behind its product with its highly responsive technical support.';
  166. {$ELSE}
  167.     MultiImage2.MsgText:='ImageLib 95/31 by SkyLine Tools. Add TIF, PNG, CMS, SCM, JPG, ICO, PCX, BMP, WMF, GIF images'+
  168.     ' to your applications. ImageLib supports both the File and Data-Aware (BLOB) read and write.'+
  169.     ' Add all the image formats and AVI, MOV, MID, RMI, WAV to a TBlobfield.';
  170. {$ENDIF}
  171.  
  172.     {set Message font name;  Note you can alse do this with a font dialog}
  173.     MultiImage2.MsgFont.Name:='Arial';
  174.    {set Message font size}
  175.     MultiImage2.MsgFont.Size:=-12;
  176.     {set Message font style}
  177.     MultiImage2.MsgFont.Style:=[];
  178.     {set Message font color}
  179.     MultiImage2.MsgFont.Color:=clAqua;
  180.     {set Message background. Note you could do this also with a color dialog}
  181.     MultiImage2.MsgBkGrnd:=clNavy;
  182.     {set Message speed from 1 is fast to 10 is slow}
  183.     MultiImage2.MsgSpeed:=7;
  184.     {inititiate new message}
  185.     MultiImage2.NewMessage;
  186.  
  187.     {IMPORTANT}
  188.     {This is the moving engine for all the messages. Since an applcation
  189.     can have only one OnIdle Trigger, this trigger needs to be subdivided
  190.     by all your moving and animated objects. In this particular case the
  191.     function is called TRIGGER but you can name it as you want as long
  192.     you have a procedure named the same.}
  193.     Application.OnIdle:=Trigger;
  194.  
  195.     If FileExists(ExtractFilePath(Application.ExeName)+'IMAGEL31.HLP') then begin
  196.      Application.HelpFile := ExtractFilePath(Application.ExeName)+'IMAGEL31.HLP';
  197.      SpeedButton11.Enabled:=True;
  198.     end;
  199.  
  200.     ImageToolBar1.PreviewsDir:=ExtractFilePath(Application.Exename);
  201.     ThumbPreview1.PreviewsDir:=ExtractFilePath(Application.Exename);
  202.     ThumbPreview1.DataFileDir:=ExtractFilePath(Application.Exename);
  203. end;
  204. {---------------------------------------------------------------------}
  205.  
  206. Procedure TDemoForm1.Trigger(Sender : TObject; Var Done : Boolean);
  207. begin
  208.    {This function is called when your app is idle. Subdivide the
  209.     trigger event to your ImageLib objects who may need one.
  210.     If no Message is active it will not take up significant time}
  211.  
  212.     MultiImage2.Trigger;
  213.  
  214.     PMultiImage1.Trigger;
  215.  
  216.     if DBMultiImageToolbar <> Nil then
  217.      DBMultiImageToolbar.PDBMultiImage1.Trigger;
  218.  
  219.     if BForm1 <> Nil then
  220.      BForm1.PMultiImage1.Trigger;
  221.  
  222.     if MMForm1 <> Nil then
  223.      MMForm1.PDBMultiMedia1.Trigger;
  224.  
  225.     if MMForm3 <> Nil then
  226.      MMForm3.PMultiMedia1.Trigger;
  227. end;
  228. {---------------------------------------------------------------------}
  229.  
  230. procedure TDemoForm1.SpeedButton1Click(Sender: TObject);
  231. begin
  232.   FrameGrab:=TFrameGrab.Create(self);
  233.   FrameGrab.ShowModal;
  234.   FrameGrab.Free;
  235. end;
  236. {---------------------------------------------------------------------}
  237.  
  238. procedure TDemoForm1.SpeedButton2Click(Sender: TObject);
  239. begin
  240.   MultiImage2.Visible:=False;
  241.   ViewImageForm:=TViewImageForm.Create(self);
  242.   ViewImageForm.ShowModal;
  243.   ViewImageForm.Free;
  244.   MultiImage2.Visible:=true;
  245.   Application.OnIdle:=Trigger;
  246. end;
  247. {---------------------------------------------------------------------}
  248.  
  249. procedure TDemoForm1.SpeedButton3Click(Sender: TObject);
  250. begin
  251.   ConvertForm1:=TConvertForm1.Create(self);
  252.   ConvertForm1.ShowModal;
  253.   ConvertForm1.Free;
  254.   Application.OnIdle:=Trigger;
  255. end;
  256. {---------------------------------------------------------------------}
  257.  
  258. procedure TDemoForm1.SpeedButton4Click(Sender: TObject);
  259. begin
  260.   MultiImage2.Visible:=False;
  261.   MMBlobForm:=TMMBlobForm.Create(self);
  262.   MMBlobForm.ShowModal;
  263.   MMBlobForm.Free;
  264.   MultiImage2.Visible:=true;
  265.   Application.OnIdle:=Trigger;
  266. end;
  267. {---------------------------------------------------------------------}
  268.  
  269. procedure TDemoForm1.SpeedButton5Click(Sender: TObject);
  270. begin
  271.   MultiImage2.Visible:=False;
  272.   BlobForm1:=TBlobForm1.Create(self);
  273.   BlobForm1.ShowModal;
  274.   BlobForm1.Free;
  275.   MultiImage2.Visible:=true;
  276.   Application.OnIdle:=Trigger;
  277. end;
  278. {---------------------------------------------------------------------}
  279.  
  280. procedure TDemoForm1.SpeedButton6Click(Sender: TObject);
  281. begin
  282.   MultiImage2.Visible:=False;
  283.   MailOrderForm:=TMailOrderForm.Create(self);
  284.   MailOrderForm.ShowModal;
  285.   MailOrderForm.Free;
  286.   MultiImage2.Visible:=true;
  287.   Application.OnIdle:=Trigger;
  288. end;
  289. {---------------------------------------------------------------------}
  290.  
  291. procedure TDemoForm1.SpeedButton7Click(Sender: TObject);
  292. begin
  293.   MultiImage2.Visible:=False;
  294.   ScrollForm1:=TScrollForm1.Create(self);
  295.   ScrollForm1.ShowModal;
  296.   ScrollForm1.Free;
  297.   MultiImage2.Visible:=true;
  298.   Application.OnIdle:=Trigger;
  299. end;
  300. {---------------------------------------------------------------------}
  301.  
  302. procedure TDemoForm1.SpeedButton8Click(Sender: TObject);
  303. begin
  304.  GlobalPalette:=PMultiImage1.Picture.Bitmap.Palette;
  305.  GPaletteD:=TGPaletteD.Create(Self);
  306.  GPaletteD.ShowModal;
  307.  GPaletteD.Free;
  308.  GlobalPalette:=0;
  309. end;
  310. {---------------------------------------------------------------------}
  311.  
  312. procedure TDemoForm1.BitBtn1Click(Sender: TObject);
  313. begin
  314.  Memo1.Visible:=False;
  315.  BitBtn1.Visible:=False;
  316.  BitBtn2.Visible:=False;
  317. end;
  318. {---------------------------------------------------------------------}
  319.  
  320. procedure TDemoForm1.SpeedButton9Click(Sender: TObject);
  321. begin
  322.  Memo1.Lines.Clear;
  323.  Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'ILibCust.txt');
  324.  Memo1.Visible:=true;
  325.  BitBtn1.Visible:=true;
  326.  BitBtn2.Visible:=true;
  327. end;
  328. {---------------------------------------------------------------------}
  329.  
  330. procedure TDemoForm1.SpeedButton10Click(Sender: TObject);
  331. begin
  332.  Memo1.Lines.Clear;
  333.  Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'ILibRef.txt');
  334.  Memo1.Visible:=true;
  335.  BitBtn1.Visible:=true;
  336.  BitBtn2.Visible:=true;
  337. end;
  338. {---------------------------------------------------------------------}
  339.  
  340. procedure TDemoForm1.SpeedButton18Click(Sender: TObject);
  341. begin
  342.  Memo1.Lines.Clear;
  343.  Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'ImageLib.txt');
  344.  Memo1.Visible:=true;
  345.  BitBtn1.Visible:=true;
  346.  BitBtn2.Visible:=true;
  347. end;
  348. {---------------------------------------------------------------------}
  349.  
  350. procedure TDemoForm1.SpeedButton11Click(Sender: TObject);
  351. begin
  352.  Application.HelpJump('');
  353. end;
  354. {---------------------------------------------------------------------}
  355.  
  356. procedure TDemoForm1.BitBtn3Click(Sender: TObject);
  357. begin
  358.   AboutBox.Image1.Picture.BitMap:=PMultiImage1.Picture.BitMap;
  359.   AboutBox.ShowModal;
  360. end;
  361. {---------------------------------------------------------------------}
  362.  
  363. procedure TDemoForm1.BitBtn2Click(Sender: TObject);
  364. var i : integer;
  365.     p : integer;
  366. begin
  367.  if PrintDialog1.execute then begin
  368.  
  369.    Printer.Begindoc;
  370.    p:=0;
  371.    For i:=0 to Memo1.Lines.Count -1 do begin
  372.     p:=i*45;
  373.     Printer.Canvas.Textout(5,P,Memo1.Lines[i]);
  374.    end;
  375.    Printer.Enddoc;
  376.  end;
  377. end;
  378. {---------------------------------------------------------------------}
  379.  
  380. procedure TDemoForm1.SpeedButton12Click(Sender: TObject);
  381. begin
  382.   IconListBoxDlg:=TIconListBoxDlg.Create(Self);
  383.   IconListBoxDlg.ShowModal;
  384.   IconListBoxDlg.Free;
  385.   PMultiImage1.Invalidate;
  386. end;
  387. {---------------------------------------------------------------------}
  388.  
  389. procedure TDemoForm1.FormActivate(Sender: TObject);
  390. begin
  391.   {Write some text over the image}
  392.   PMultiImage1.Font.Size:=10;
  393.   PMultiImage1.Font.Color:=clLime;
  394.   PMultiImage1.Text:='ImageLib 95/31 by SkyLine Tools (c)';
  395.   PMultiImage1.TextShadow:=True;
  396.   PMultiImage1.TextLeft:=1;
  397.   PMultiImage1.TextTop:=PMultiImage1.ClientRect.Top;
  398.   PMultiImage1.TextRotate:=0;
  399.   PMultiImage1.TextTransParent:=True;
  400.   DemoForm1.Caption:='ImageLib 95 Portfolio';
  401.   PMultiImage1.Canvas.Pen.Width := 5;
  402.   PMultiImage1.Canvas.Pen.Style := psDot;
  403.   Randomize;
  404. end;
  405. {---------------------------------------------------------------------}
  406.  
  407. procedure TDemoForm1.SpeedButton14Click(Sender: TObject);
  408. begin
  409.  {Show or hide the toolbar
  410.   Note: The toolbar can only be uses on NON modal forms}
  411.   ImageToolBar1.ShowToolbar:= not ImageToolBar1.ShowToolbar;
  412. end;
  413. {---------------------------------------------------------------------}
  414.  
  415. procedure TDemoForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  416. begin
  417.   {Kill the OnIdle just to be save}
  418.   Application.OnIdle:=Nil;
  419.  
  420.   {In case the toolbar forms are not nil we could free it}
  421.   If BForm1 <> Nil then
  422.    BForm1.Free;
  423.  
  424.   If DBMultiImageToolbar <> Nil then
  425.    DBMultiImageToolbar.Free;
  426.  
  427.   If MMForm1 <> Nil then
  428.    MMForm1.Free;
  429.  
  430.   If MMForm3 <> Nil then
  431.    MMForm3.Free;
  432. end;
  433. {---------------------------------------------------------------------}
  434.  
  435. procedure TDemoForm1.SpeedButton13Click(Sender: TObject);
  436. begin
  437.   {This from includes a toolbar so that we must show it non modal}
  438.   If BForm1 = Nil then
  439.    BForm1:=TBForm1.Create(self);
  440.   BForm1.Show;
  441. end;
  442. {---------------------------------------------------------------------}
  443.  
  444. procedure TDemoForm1.SpeedButton15Click(Sender: TObject);
  445. begin
  446.   {This from includes a toolbar so that we must show it non modal}
  447.   If DBMultiImageToolbar = Nil then
  448.    DBMultiImageToolbar:=TDBMultiImageToolbar.Create(self);
  449.   DBMultiImageToolbar.Show;
  450. end;
  451. {---------------------------------------------------------------------}
  452.  
  453. procedure TDemoForm1.SpeedButton16Click(Sender: TObject);
  454. begin
  455.   {This from includes a toolbar so that we must show it non modal}
  456.   If MMForm1 = Nil then
  457.    MMForm1:=TMMForm1.Create(self);
  458.   MMForm1.Show;
  459. end;
  460. {---------------------------------------------------------------------}
  461.  
  462. procedure TDemoForm1.SpeedButton17Click(Sender: TObject);
  463. begin
  464.   {This from includes a toolbar so that we must show it non modal}
  465.   If MMForm3 = Nil then
  466.    MMForm3:=TMMForm3.Create(self);
  467.   MMForm3.Show;
  468. end;
  469. {---------------------------------------------------------------------}
  470.  
  471. procedure TDemoForm1.SpeedButton19Click(Sender: TObject);
  472. begin
  473.   {This from includes a toolbar so that we must show it non modal}
  474.   If RubberbandForm = Nil then
  475.    RubberbandForm:=TRubberbandForm.Create(self);
  476.   RubberbandForm.Show;
  477. end;
  478. {---------------------------------------------------------------------}
  479.  
  480.  
  481. end.
  482.  
  483.  
  484.  
  485.  
  486.  
  487.